Jornada de Open Science na Prática
Wilson et al. (2017). Good enough practices in scientific computing. PLOS Computational Biology, 13(6), e1005510.
https://doi.org/10.1371/journal.pcbi.1005510
Esse guia foi adaptado e atualizado para um Curso Carpentries em 2024.
1. Código Ilegível
x1, temp, final2)2. Dependências Não Documentadas
3. Caminhos Absolutos
C:/Users/Pablo/... não funciona em outros PCs4. Passos Manuais
5. Aleatoriedade Não Controlada
set.seed() em simulações/bootstraps6. Dados Brutos Modificados
💡 Nesta aula vamos aprender a evitar essas barreiras!
a. Salve os dados brutos
b. Backup dos dados brutos
c. Transformar dados para formatos mais fáceis
Princípios fundamentais:
❌ Dados “bagunçados” (WIDE):
| Participante | Jan_2023 | Fev_2023 | Mar_2023 |
|---|---|---|---|
| P001 | 85 | 90 | 88 |
| P002 | 78 | 82 | 85 |
✅ Mesmos dados “tidy” (LONG):
| Participante | Mês | Score |
|---|---|---|
| P001 | Jan_2023 | 85 |
| P001 | Fev_2023 | 90 |
| P001 | Mar_2023 | 88 |
| P002 | Jan_2023 | 78 |
| P002 | Fev_2023 | 82 |
| P002 | Mar_2023 | 85 |
e. Registrar todas as etapas do processamento
f. Use identificadores únicos
g. Disponibilizar dados em repositórios com DOI
a. Comentários iniciais em scripts
b. Decompor rotinas em funções menores
c. Evitar duplicação de código
d. Buscar e utilizar bibliotecas existentes
e. Testar bibliotecas antes de usar
f. Dar nomes significativos
g. Documentar dependências e requisitos
requirements.txt (Python) renv.lock (R)h. Disponibilizar conjuntos de dados de exemplo
i. Enviar código para repositórios com DOI
Para Arquivos:
import-survey-data-2024.R2024-11-02-analysis.R01-import.R, 02-clean.R- ou _final.R, new.R, data1.csv, teste.RPara Variáveis:
participant_age, total_incomemean_response_time (não mrt)x1, temp, final2, var_newa. Desenvolver um resumo do projeto
b. Manter lista de tarefas acessível
c. Definir estratégias de comunicação
d. Especificar claramente a licença
e. Tornar o projeto citável
a. Cada projeto em seu próprio diretório
b. Saídas do projeto no diretório Output
c. Dados brutos e metadata no diretório Data
InputData/ e AnalysisData/d. Centralizar rotinas numa pasta de scripts
scripts/ e subdiretórios: AnalysisScripts/e ProcessingScripts (mínimo)e. Nomear arquivos para refletir conteúdo
data_collection.csv ao invés de file1.csva. Fazer backup de tudo criado
b. Manter mudanças pequenas e gerenciáveis
c. Compartilhar mudanças regularmente
d. Criar checklist para gerenciar mudanças
e. Usar controle de versão
a. Ferramentas online com controle de versão
b. Formato de texto simples com controle de versão
Se você não vai usar o RStudio/Quarto ou Git/GitHub, considere, no mínimo, essas dicas:
O que é: Um único script que executa todo o projeto do início ao fim
Por que importa: Elimina ambiguidade sobre ordem de execução
Exemplo de como fazer:
# run_all.R - Master Script
rm(list = ls()) # Limpa ambiente
unlink("results/*") # Remove outputs antigos
source("src/00-setup.R") # Carrega pacotes
source("src/01-import-data.R") # Importa dados
source("src/02-clean-data.R") # Limpa dados
source("src/03-analyze.R") # Análises
source("src/04-generate-plots.R") # Gráficos
rmarkdown::render("doc/paper.Rmd") # Compila manuscrito
cat("✅ Pipeline completo!
")O problema: Caminhos absolutos não funcionam em outros computadores
A solução: Use pacote here para caminhos relativos
# ✅ Portável - funciona em qualquer PC
library(here)
data <- read.csv(here("data", "raw", "dados.csv"))
write.csv(results, here("results", "output.csv"))Regras de ouro:
setwd() em scriptshere::here() para construir pathsO problema: Código que funcionava em 2023 pode quebrar em 2025 devido a mudanças em pacotes
Solução mínima:
sessionInfo() ao final de cada script# No final do seu script
sessionInfo()
# Salvar em arquivo
sink(here("results", "session_info.txt"))
sessionInfo()
sink()Solução avançada: Use renv para isolar ambientes por projeto
Adicionar arquivo CHANGELOG.txt
Copiar projeto em mudanças significativas
“Seu principal colaborador é você mesmo daqui 6 meses,
que não vai lembrar de nada do que fez hoje.”— Adaptado de Karl Broman

Gestão de Projetos | Literacia em Dados